[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1 Der GNU C Compiler: Allgemeine Informationen und Installation

Dieser Abschnitt enth�lt Informationen �ber den Amiga-Port des GNU C Compilers generell und die Installation insbesondere.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 Aktuelle Version

Die aktuelle gcc-Version ist 2.6.0 und an 2.6.1 wird gearbeitet. Sie enth�lt eine neue Version der ixemul.library (v40.3), aber man sollte sich wegen Fehlern, die sich auf 68000-Systemen bemerkbar machen, ixemul404.lha vom Aminet oder von meiner FTP-Site holen. Au�erdem gibt es eine neue library, libnix, die das Ben�tzen der ixemul.library verhindert. 2.6.1 wird Protos (wie bei SAS-C) enthalten, um das Kompilieren von SASC-Code unter gcc leichter zu machen. Ein neuer Assembler, gas-2.5, ist enthalten, ein Paket namens q_anote erm�glicht die Ausgabe von gemischtem C/Asm-Code zu Debugging-Zwecken. In Arbeit ist die F�higkeit des Compilers, den Stack wachsen zu lassen, damit man vor dem Starten von gcc nicht mehr den Stack setzen mu�.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.2 Hardwareanforderungen

Jeder Amiga (vom A1000 bis zum A4000/40) ist prinzipiell in der Lage, die GNU-Utilities f�r AmigaDOS zu benutzen. Allerdings braucht man wenigstens 4MB RAM, um kleinere oder mittlere Projekte zu �bersetzen, f�r gr��ere (z.B. f�r gcc selbst) entsprechend mehr. Gigamem und VMM arbeiten mit gcc zusammen, es *k�nnte* also evtl. auch mit weniger gehen. Dazu braucht man aber eine MMU. @xref{68EC0xx}.

Eine volle Installation mitsamt C++ und Objective-C, inline-Dateien und Commodore Includes (@pxref{Include-Dateien}) ben�tigt ca. 20 MB Platz auf der Festplatte.

Kickstart 1.2/1.3 wird nicht mehr unterst�tzt. Wer KS 1.2/1.3 hat, sollte sich eine bessere Kickstart-Version kaufen. Gcc arbeitet auch unter Kickstart 1.2/1.3, die volle Funktionalit�t ist aber erst ab Kickstart 2.x+ vorhanden. Eine schnelle CPU (z.B. 68030@25MHz oder besser) ist ebenfalls sinnvoll.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.3 Wer hat es gemacht?

Gcc und damit zusammenh�ngende Software wurde von den folgenden Personen auf den Amiga portiert (see section Wichtige Informationsquellen):

	Gcc v2.2.2:   Markus Wild
	Gcc v2.3.3:   Markus Wild
	Gcc v2.4.5:   Philippe Brand, Lars Hecking, Fred Fish
	Gcc v2.5.0 und sp�ter: Philippe Brand, Fred Fish, Leonard Norrgard

	Ixemul.library:    Markus Wild, Leonard Norrgard, R. Luebbert
	Libnix:		   Matthias Fleischer, Gunther Nikl
        Gerlib:            Gerhard M�ller

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4 Wo finde ich die gcc-Quelltexte?

Alle gcc-Quelltexte und alle Bin�rdateien findet man auf:

  1. Aminet (wuarchive.wustl.edu und Mirror wie ftp.luth.se) in /pub/aminet/dev/gcc (@pxref{FTP})
  2. Ramses The Amiga Flying BBS:
    	+33-1-60037015  HST Dual v32 terbo 4800-21600
            +33-1-60037713  SupraFax v32bis    4800-14400
            +33-1-60037716  Tornado v22bis     1200-2400
    

    in Topic ‘Development’, Area ‘Gcc’ (are 156).

Den originalen GNU-Quelltext bekommt man

  1. von denselben FTP-Servern wie die Binaries
  2. gnu.prep.ai.mit.edu (18.71.0.38) in ‘/pub/gnu
  3. Ramses The Amiga Flying BBS in Topic ‘AmigaUnix/Unix/Linux/NetBSD’, Area ‘Gnu Source Code

Diese Archive sollten alles N�tige enthalten, mit Ausnahme der Quelltexte der ixemul.library. Diese erh�lt man ebenfalls auf dem Aminet, Directory ‘dev/gcc’. (Zur Zeit ist die Version 40 der ixemul.library in Arbeit. Die Quelltexte werden am gleichen Ort sein.)

Durch Richard Stallman, Free Software Foundation, ist festgelegt:

"The GPL says that any distribution of binaries must contain either the source code or a written offer to supply source code (see the GPL for details of what is required)."

�bersetzt: Die GPL (GNU General Public License) legt fest, da� jede Distribution entweder den Quelltext oder das schriftliche (oder geschriebene?) Angebot, diese zu liefern, enthalten mu�. (N�heres siehe in der GPL.)


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.5 Inline-Dateien

Die Inline-Dateien f�r den gcc kann man aus den originalen FD-Dateien von Commodore wie folgt erzeugen (@xref{Include-Dateien}, @pxref{Pragmas}):

CLI> Assign INCLUDE: GCC:os-include
CLI> Assign FD: INCLUDE:fd
CLI> Makedir INCLUDE:inline
CLI> cd USR:bin/geninline
CLI> gen31

Dies sollte alle Inline-Dateien in ‘GCC:os-include/inline’ erzeugen. Falls man die 2.0- bzw. 3.0-Includes besitzt, sollte man gen20 bzw. gen30 benutzen. Inline-Dateien f�r OS3.1 (rev 40.13) sind in <gcc-aktuell> enthalten. See section Aktuelle Version. (1)

Auch mit dem Programm fd2inline kann man Inline-Dateien erzeugen:

CLI> fd2inline <fd_file> <proto_file>

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6 Wie konvertiere ich die Amiga-Libraries f�r den gcc?

Ab gcc Version 2.6.0 werden dank den libnix-Autoren (Matthias Fleischer und Gunther Nikl) AmigaDOS Linklibraries unterst�tzt.

Wenn man trotzdem eine gcc-Linklibrary generieren will, gibt es zwei Methoden:

1. Mit hunk2gcc, dem AmigaDOS-Object-Konvertierer von Markus Wild. Dazu braucht man zun�chst eine aktuelle Kopie der amiga.lib (aus dem NDU, @pxref{Include-Dateien}). Nachdem man sich ein Directory f�r die konvertierten Dateien erstellt hat, wechselt man mit cd in dieses Directory und gibt das Folgende ein:

	hunk2gcc amiga.lib [..further libs if you like..]

Dies erzeugt ein Objektfile wie a.out f�r jedes einzelne Modul, das die Library enth�lt. Diese Module mu� man anschlie�end in einer gcc-Library zusammenfassen:

	ar qc libamiga.a obj.*
	ranlib libamiga.a

Das Programm ranlib f�gt eine Symboltabelle in die Library ein. (Dadurch wird der Zugriff auf die Library sehr viel schneller.)

2. Eine libamiga.a mit libnix zu generieren ist recht leicht, braucht aber einige Zeit. Man dekomprimiere sources.lha aus dem libnix-Archiv und starte ein ’make libamiga.a’.

Beachte: Solange man keine reinen AmigaDOS-Funktionen verwendet, kann man auch eine Pseudo-Library erzeugen:

  cat "int dummy;" >dummy.c
  gcc -c dummy.c
  ar crv libamiga.a dummy.o
  mv libamiga.a gcc:lib

[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.7 Wie installiere ich den gcc?

  1. Falls dies die erste Installation von gcc ist:

    Mache das Folgende:

    cd ort_mit_sehr_viel_platz      ; �NDERN! Gib eine Schublade an
    makedir gnu
    lha x gcc260-base.lha           ; Der erste Teil, du brauchst ihn
    

    Jetzt mu�t du ‘gnu/s/user-startup’ an dein ‘S:User-Startup’ anh�ngen (Ersetze Devel:GNU durch deinen eigenen Gnu Pfad).

    Weiter:

    execute gnu/s/user-startup     ; setzt wichtige Assigns
    copy gnu/envarc/#? ENVARC:
    

    �ndere die folgenden Zeilen! Wenn du einen 68000- oder 68010-Amiga hast, entferne das "-020" aus allen folgenden Zeilen!

    lha x gcc260-c-020.lha      ; Der C-compiler; du brauchst ihn
    lha x gcc260-doc.lha        ; Wenn du die Dokumentation zu gcc willst
    lha x gcc260-c++-020.lha    ; Wenn du C++ haben willst
    lha x gcc260-objc-020.lha   ; Wenn du Objective-C haben willst
    lha x gcc260-utils.lha      ; Wenn du zus�tzliche Utilities haben willst
                                ; (empfohlen zur Kompatibilit�t mit Unix)
    lha x gcc260-utilsdoc.lha   ; Wenn du Dokumentation zu allen Utilities willst
    

    Mit dem Script ‘restorelinks’ mu�t du Links generieren:

    sh /gnu/s/restorelinks      ; �NDERN! F�ge " copy" an diese Zeile an,
                                ; wenn du MakeLink nicht ben�tzen willst,
                                ; sondern Files lieber kopieren willst
    

    Schlie�lich:

    lha x gcc260-diffs.lha      ; Wenn du gcc neu kompilieren willst
    lha x gcc260-texi.lha       ; Wenn du Postscript-Doku generieren willst
    

    Auf zum n�chsten Punkt und fr�hliches Kompilieren!

  2. Wenn du ein Upgrade deiner gcc-Umgebung von v2.5.x machen willst, dearchiviere einfach gcc260-base.lha und gcc260-c-020.lha. Gehe sicher, da� du deine fr�here ixemul.library l�schst, wo sie sich auch befindet. (�blicherweise in ‘LIBS:’)

Beachte: Eine neue Version der ixemul.library wird verwendet, gehe bitte sicher, da� nirgends eine andere Kopie ist, die in Konflikt mit der neuen Version geraten kann.


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.8 Kompilieren

Wie w�r’s mit einem netten ‘Hello world’?

#include <stdio.h>

main()
{
  printf("Hello World!\n");
}

Das war recht einfach ;-) Jetzt m�ssen wir es kompilieren. Es gibt eine Menge Optionen in gcc, aber die einfachste M�glichkeit zu kompilieren ist:

CLI> gcc -o hello hello.c

Einfach? Hier sind mehr Optionen:

Ziel-Prozessoren von Motorola: Man kann reinen 68000 code, 68020, 68030, 68040 und/oder 68881 kompilieren. (Siehe Gcc-Dokumentation, Kapitel ‘Invoking Gcc/SubModel Options/M680X0 Options for Motorola specific compilation flags’.

CLI> gcc -m68020 -m68881 -o hello hello.c

Dies kompiliert Programme mit 68020 Code und direkten FPU-Befehlen und bindet mit den beschleunigten Libraries aus ‘GCC:lib/lib020’.

Optimierung: Entweder du willst keine Optimierung oder du gibst ‘-O’ an, das den Code optimiert, oder ‘-O2’ f�r bessere Optimierung (Siehe die Dokumentation im Kapitel ‘Invoking Gcc/Optimize Options’). Inzwischen gibt es auch eine ‘-O3’ Option, die noch weiter geht.

CLI> gcc -O2 -o hello hello.c

Ein schnelles "Hello World" ;-)

Codegenerierung: Vielleicht willst du residente Programme haben. Die Option dazu hei�t ‘-resident’.

CLI> gcc -resident -o hello hello.c

Nat�rlich kannst du alle Optionen mischen, so etwa:

CLI> gcc -O2 -m68020 -m68881 -resident -o hello hello.c

Dies wird ein hoch optimiertes residentes Programm f�r 68020 und 68881 ergeben.

Wichtig: Wenn du nur AmigaOS-Funktionen verwendest oder aus irgendwelchen philosophischen Gr�nden keine ixemul.library verwenden willst, dann kannst du diese loswerden durch:

CLI> gcc -noixemul -o foobar foobar.c

nat�rlich nur, wenn du libnix hast (enthalten in gcc 2.6.0).


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.9 Wichtige Informationsquellen

Der aktuelle Betreuer des Amiga-Ports von gcc ist:

    Philippe BRAND
    Fidonet: Ramses The Amiga Flying BBS 2:320/104.21
    Email:   phb@colombo.telesys-innov.fr (ONLY for personnal email).
    Ftp:     colombo.telesys-innov.fr:/pub/amigados-gnu
             or /pub/incoming/uploads for uploads.

Es gibt auch eine Mail-Liste in Finnland. @xref{Mail-Listen}. Philippe Brand wird im Normalfall Fragen an diese Liste weiterleiten.


[Top] [Contents] [Index] [ ? ]

Footnotes

(1)

Perl Skripte haben Schwierigkeiten, die Include-Dateien von AmigaDOS korrekt zu behandeln. Hier w�re etwas freiwillige Arbeit n�tig ...


[Top] [Contents] [Index] [ ? ]

About This Document

This document was generated on February 11, 2022 using texi2html 5.0.

The buttons in the navigation panels have the following meaning:

Button Name Go to From 1.2.3 go to
[ << ] FastBack Beginning of this chapter or previous chapter 1
[ < ] Back Previous section in reading order 1.2.2
[ Up ] Up Up section 1.2
[ > ] Forward Next section in reading order 1.2.4
[ >> ] FastForward Next chapter 2
[Top] Top Cover (top) of document  
[Contents] Contents Table of contents  
[Index] Index Index  
[ ? ] About About (help)  

where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:


This document was generated on February 11, 2022 using texi2html 5.0.